import { Base } from "../core/Base";
import { must } from "../core/logic";
/**
 * 组件管理类
 * @author jiangjinwei
 */
class ComponentManager extends Base{
    constructor(opts={}){
        super(opts);
        this.type=must(opts.type);
        this._components=new Map();
    }
    /**
     * 返回所有type类型的组件
     */
    get components(){
        return this._components;
    }
    /**
     * 添加组件
     * @param {Component} component 组件实例。
     * @returns {ComponentManager} 返回组件管理类。
     */
    add(component){
        this.components.set(component.id,component);
        return this;
    }
    /**
     * 移除组件
     * @param {*} component 组件实例ID。
     * @returns {ComponentManager} 返回组件管理类。
     */
    remove(id){
        this.components.delete(id);
        return this;
    }
    /**
     * 获取组件
     * @param {*} component 组件实例ID。
     * @returns {Component} 返回组件实例。
     */
    get(id){
        return this.components.get(id);
    }
    /**
     * 是否存在该组件。
     * @param {*} component 组件实例或组件实例ID。
     * @returns {Boolean} 组件是否存在。
     */
    has(id){
        return this.components.has(id);
    }
    clear(){
        this.components.clear();
      }
}
export {ComponentManager}